import Vue from 'vue'
import Router from 'vue-router'
import { constantRouterMap } from '@/config/router.config'

// hack router push callback
const originalPush = Router.prototype.push
Router.prototype.push = function push (location, onResolve, onReject) {
  if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
  return originalPush.call(this, location).catch(err => err)
}

Vue.use(Router)

/*
* hashHistory 使用如 https://cdn.com/#/users/123 这样的 URL，取井号后面的字符作为路径。
* browserHistory 则直接使用 https://cdn.com/users/123 这样的 URL。使
* 用 hashHistory 时浏览器访问到的始终都是根目录下 index.html。
* 使用 browserHistory 则需要服务器做好处理 URL 的准备，

* 处理应用启动最初的 / 这样的请求应该没问题，但当用户来回跳转并在 /users/123 刷新时，
* 服务器就会收到来自 /users/123 的请求，这时你需要配置服务器能处理这个 URL 返回正确的 index.html。
* 如果你能控制服务端，我们推荐使用 browserHistory
* */
export default new Router({
  mode: 'history', // 默认是 history 可以改为 hash
  base: process.env.BASE_URL,
  scrollBehavior: () => ({ y: 0 }),
  routes: constantRouterMap
})
